package com.itheima.edu.info.manager.controller;

import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.domain.Teacher;
import com.itheima.edu.info.manager.service.TeacherService;
import com.sun.org.apache.bcel.internal.generic.NEW;

import java.util.Scanner;

//老师客服类
public class TeacherController  {
    private TeacherService service = new TeacherService();
    private Scanner sc = new Scanner(System.in);
    //老师管理系统菜单展示功能
    public void start() {
        while (true) {
            //展示二级功能菜单
            System.out.println("--------欢迎来到老师管理系统--------");
            System.out.println("1 添加老师");
            System.out.println("2 删除老师");
            System.out.println("3 修改老师");
            System.out.println("4 查看老师");
            System.out.println("5 退出");
            System.out.println("请输入您的选择:");
            int choice = sc.nextInt();

            //基于用户录入的操作指令进行功能的路由
            switch (choice) {
                case 1:
                    addTeacher();
                    break;
                case 2:
                    deleteTeacher();
                    break;
                case 3:
                    updateTeacher();
                    break;
                case 4:
                    findAllTeacher();
                    break;
                case 5:
                    System.out.println("感谢您使用老师管理系统,再会~");
                    //仅仅退出当前方法
                    return;
                default:
                    System.out.println("输入有误!");
                    break;
            }
        }
    }
//老师客服类中修改老师信息
    public void updateTeacher() {
        //判断一下当前系统是否有数据,如果没有数据,直接给个提示return当前无数据
        //1.指挥业务员把系统的数据全部查到
        Teacher[] teas = service.findAllTeacher();
        //有数据就展示数据
        if (teas == null){
            System.out.println("当前系统无数据,请添加后重试");
            return;
        }
        //1.拿到要修改的老师学号
        System.out.println("请输入要修改的老师学号");
        String updateId;
        while(true) {
            updateId = sc.next();
        /*
        校验用户输入的学号是否存在
        存在,让代码继续往下走修改
        不存在,提示学号不存在,请重新输入
         */
            //指挥业务员校验本次录入的学号是否存在
            boolean flag = service.isExists(updateId);
            //如果返回的是false,则表示学号不存在,这时候提示,学号不存在,请重新输入
            if (!flag) {
                System.out.println("当前学号不存在,请重新输入");
            }else{
                break;
            }
        }
        //2.拿到要修改的老师新信息
        System.out.println("请输入老师姓名");
        String name = sc.next();
        System.out.println("请输入老师年龄");
        String age = sc.next();
        System.out.println("请输入老师出生日期");
        String birthday = sc.next();
        //3.封装新的老师对象
        Teacher newTea = new Teacher();
        newTea.setId(updateId);
        newTea.setName(name);
        newTea.setAge(age);
        newTea.setBirthday(birthday);
        //4.指挥业务员进行修改老师的业务处理
        service.updateTeacher(updateId,newTea);
        //5.展示给用户的最终结果
        System.out.println("修改成功");
    }

    //老师客服类中的删除老师信息
    public void deleteTeacher() {
        //1. 指挥业务员把系统中的数据全部查到
        Teacher[] teas = service.findAllTeacher();
        //有数据,就展示数据
        if (teas == null) {
            //没有数据,提示当前系统无数据,请添加后重试!
            System.out.println("当前系统无数据,请添加后重试!");
            return;
        }
        //1. 让用户输入要删除的老师学号
        System.out.println("请输入要删除的老师学号:");
        String deleteId = sc.next();

        //2. 指挥业务员去干删除业务
        boolean result = service.deleteTeacher(deleteId);

        //3. 给出删除结果提示信息
        if (result) {
            System.out.println("删除成功");
        } else {
            System.out.println("删除失败,请确保要删除的老师学号存在!");
        }
    }

    //老师客服类中的查看老师信息
    public void findAllTeacher() {
        //1.指挥业务员把系统的数据全部查到
        Teacher[] teas = service.findAllTeacher();
        //有数据就展示数据
        if (teas == null) {
            //没有数据,提示当前系统无数据,请添加后重试!
            System.out.println("当前系统无数据,请添加后重试!");
        } else {
            //2. 遍历系统数据,将每一个老师信息打印到控制台,展示给用户
            //2.1 展示数据之前,先展示表头数据
            System.out.println("学号\t\t姓名\t年龄\t生日");
            //2.2 再来遍历容器,展示老师信息
            for (int i = 0; i < teas.length; i++) {
                //拿到每一个老师信息
                Teacher tea = teas[i];
                //输出当前老师信息
                if (tea != null) {
                    System.out.println(tea.getId() + "\t" + tea.getName() + "\t" + tea.getAge() + "\t\t" + tea.getBirthday());
                }
            }
        }
    }
    //老师客服类中的添加老师功能
    public void addTeacher() {
        //1.让用户录入要添加的老师信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入老师学号:");
        String id = sc.next();
        System.out.println("请输入老师姓名:");
        String name = sc.next();
        System.out.println("请输入老师年龄:");
        String age = sc.next();
        System.out.println("请输入老师出生日期:");
        String birthday = sc.next();
        //2. 将用户录入的老师信息封装成一个老师对象
        Teacher tea = new Teacher();
        tea.setId(id);
        tea.setName(name);
        tea.setAge(age);
        tea.setBirthday(birthday);
        //3. 指挥业务员进行添加老师的业务处理
        boolean result = service.addTeacher(tea);
        //4. 根据业务员返回的结果组织对应的展示信息给用户
        if (result){
            System.out.println("添加成功!");
        }else {
            System.out.println("添加失败!");
        }
    }
    }
